/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import components.Database;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**import co
 *
 * @author tomkeim
 */
public class MasterclassInschrijving {

    private Speler speler;
    private Masterclass masterclass;
    private boolean heeftBetaald;

    public boolean isHeeftBetaald() {
        return heeftBetaald;
    }

    public void setHeeftBetaald(boolean heeftBetaald) {
        this.heeftBetaald = heeftBetaald;
    }

    public Masterclass getMasterclass() {
        return masterclass;
    }

    public void setMasterclass(Masterclass masterclass) {
        this.masterclass = masterclass;
    }

    public Speler getSpeler() {
        return speler;
    }

    public void setSpeler(Speler speler) {
        this.speler = speler;
    }

    public static MasterclassInschrijving[] getInschrijvingen(Masterclass masterclass) {
        ArrayList<MasterclassInschrijving> inschrijvingen = new ArrayList<MasterclassInschrijving>();
        MasterclassInschrijving newInschrijving;
        String query = "SELECT * FROM MasterclassInschrijving WHERE masterclassid = " + masterclass.getMasterclassID();
        ResultSet result = Database.executeSelectQuery(query);
        try {
            while (result.next()) {
                newInschrijving = new MasterclassInschrijving();

                newInschrijving.setSpeler(Speler.getSpeler(result.getInt("spelerid")));
                newInschrijving.setMasterclass(Masterclass.getMasterclass(result.getInt("masterclassid")));
                newInschrijving.setHeeftBetaald(result.getBoolean("betaald"));

                inschrijvingen.add(newInschrijving);
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
        MasterclassInschrijving[] inschrijvingenArray = new MasterclassInschrijving[inschrijvingen.size()];
        for (int i = 0; i < inschrijvingen.size(); i++) {
            inschrijvingenArray[i] = inschrijvingen.get(i);
        }

        return inschrijvingenArray;
    }

    public static MasterclassInschrijving getInschrijving(Masterclass masterclass, Speler speler) {

        MasterclassInschrijving inschrijving = null;

        String query = "SELECT * FROM MasterclassInschrijving WHERE masterclassid = " + masterclass.getMasterclassID() + " AND spelerid = " + speler.getSpelerid();

        ResultSet result = Database.executeSelectQuery(query);

        try {
            result.next();
            inschrijving = new MasterclassInschrijving();
            inschrijving.setSpeler(Speler.getSpeler(result.getInt("spelerid")));
            inschrijving.setMasterclass(Masterclass.getMasterclass(result.getInt("masterclassid")));
            inschrijving.setHeeftBetaald(result.getBoolean("betaald"));

        } catch (SQLException e) {
        }

        return inschrijving;

    }

    public boolean delete() {
        boolean successful = false;
        String query = "DELETE from MasterclassInschrijving where spelerid = '" + this.getSpeler().getSpelerid() + "' AND masterclassid = '" + this.getMasterclass().getMasterclassID() + "'";
        if (Database.executeDeleteQuery(query) == 1) {
            // er is 1 record verwijderd
            successful = true;
        }
        return successful;
    }

    public boolean insert() {
        boolean success = false;

        String query = "INSERT INTO MasterclassInschrijving (spelerid,masterclassid,betaald) VALUES (" + this.getSpeler().getSpelerid() + ", " + this.getMasterclass().getMasterclassID() + ", " + this.isHeeftBetaald() + ")";

        if (Database.executeInsertQuery(query) > 0) {

            success = true;
        }

        return success;
    }

    public boolean update() {
        String query = "UPDATE MasterclassInschrijving SET betaald= " + this.isHeeftBetaald() + " WHERE spelerid = " + this.getSpeler().getSpelerid() + " AND masterclassid = " + this.getMasterclass().getMasterclassID();
        if (Database.executeUpdateQuery(query) == 1) {
            return true;
        }
        return false;
    }
}
